#include "align.h"

#include <vector>
using std::vector;

class Matrix2{
private:
	int size_x;
	int size_y;
	float ** score;
	char ** dir;
	bool ** match;
	float bestA_score;
	int offset;
	int number_of_routes;

	//parameters
	float match_score;
	float mismatch_score;
	float gSeq_score;
	float gMono_score;
	int align_start_x;
	int align_end_x;
	int align_start_y;
	int align_end_y;
	int align_len;

	//private functions
	float calc_score(int x, int y, char & d);
	bool determine_alignment(char list);
	bool traceback();
	float get_max_value();

public:
	Matrix2(float * vals);
	bool make_matrices(char *& monoSeq, int monoSeqLen, char *& subSeq, int subSeqLen, int o);
	~Matrix2();
	int get_num_starting_pos(float max);
	bool get_alignment(Align *& a);
	float get_best_align_score();
};